#ifndef ABSTRACTSECTIONVIEW_H
#define ABSTRACTSECTIONVIEW_H

#include <QMainWindow>
#include <QVariantList>

template <typename Type> class GraphNode;
class QMainWindow;
class NavigatorBar;
class SectionInfo;

class AbstractSectionView : public QMainWindow
{
    Q_OBJECT
public:
    explicit AbstractSectionView (QWidget *parent = 0);

    GraphNode<SectionInfo>* sectionNode() const;
    QVariantList nextSectionParameters();

public slots:
    void setNavigatorBar (NavigatorBar* navigatorBar);
    void setSectionNode (GraphNode<SectionInfo>* sectionNode);
    virtual void initialize() {}
    virtual void refresh() {}

signals:
    void showSectionRequested (GraphNode<SectionInfo>* node, bool isSiblingSection);
    void notifyHint (QString title, QString message);
    void notifyInformation (QString title, QString message);
    void notifyWarning (QString title, QString message);

protected:
    NavigatorBar* m_navigatorBar;
    GraphNode<SectionInfo>* m_sectionNode;
    int m_toolBarIconSize;
    int m_menuActionIconSize;
};

#endif // ABSTRACTSECTIONVIEW_H
